<html>
<head>
<script type="text/javascript">
var INKs = 
{
"ap_ink_version":"INK version",
"ap_ink_create_time":"INK create time",

"bt_ava":"Bluetooth supported",
"bt_interface":"Interface",

"ca_number":"Camera number",
"ca_pixels":"Pixels",
"ca_pic_fmt":"Picture formats",
"ca_pic_size":"Picture sizes",
"ca_pv_fmt":"Preview formats",
"ca_pv_size":"Preview sizes",
"ca_pv_frate":"Preview frame rates",
"ca_pv_fps":"Preview FPS",
"ca_vsize":"Video sizes",
"ca_aband":"Anti-banding",
"ca_ceffect":"Color effect",
"ca_flash":"Flash modes",
"ca_focus":"Focus modes",
"ca_thumb_size":"Thumbnail sizes",
"ca_scene":"Scene modes",
"ca_wbal":"White balance",
"ca_zoom":"Zoom",
"ca_smooth_zoom":"Smooth zoom",
"ca_facing":"Facing",
"ca_orientation":"Orientation",

"cp_label":"Label",
"cp_abi":"ABI",
"cp_abi2":"ABI2",
"cp_core_num":"Physical core number",
"cp_vm_core_num":"VM core number",
"cp_mips":"MIPS",
"cp_min_freq":"Min frequency",
"cp_max_freq":"Max frequency",
"cp_features":"Features",
"cp_implementer":"Implementer",
"cp_architecture":"Architecture",
"cp_variant":"Variant",
"cp_part":"Part",
"cp_revision":"Revision",

"dp_w": "Width",
"dp_h": "Height",
"dp_density": "Density",
"dp_sdensity": "Scaled density",
"dp_ddpi": "Density DPI",
"dp_xdpi": "X DPI",
"dp_ydpi": "Y DPI",
"dp_pixel_fmt": "Pixel format",
"dp_refresh_rate": "Refresh rate",
"dp_font_scale": "Font scale",
"dp_layout_size": "Layout size",
"dp_layout_aspect": "Layout aspect",
"dp_layout_swidth": "Layout smallest width",
"dp_layout_awidth": "Layout available width",
"dp_layout_aheight": "Layout available height",
"dp_screen_size": "Screen size",

"mi_ram_total":"RAM total",
"mi_swap_total":"Swap total",
"mi_native_heap":"Native heap",
"mi_vm_max_mem":"VM max memory",
"mi_threshold":"Low threshold",

"sg_int_size":"Internal storage size",
"sg_int_path":"Internal storage path",
"sg_ext_num":"External storage number",
"sg_1st_ext_size":"Primary external storage size",
"sg_1st_ext_path":"Primary external storage path",
"sg_1st_ext_removable":"Primary external storage removable",
"sg_1st_ext_emulated":"Primary external storage emulated",
"sg_2nd_ext_size":"Secondary external storage size",
"sg_2nd_ext_path":"Secondary external storage path",

"ss_available_type":"Available sensors",
"ss_acc_name":"Accelerometer",
"ss_acc_vendor":"Vendor",
"ss_acc_version":"Version",
"ss_acc_power":"Power",
"ss_acc_resolution":"Resolution",
"ss_acc_max":"Max range",
"ss_acc_min_delay":"Min delay",
"ss_gravity_name":"Gravity",
"ss_gravity_vendor":"Vendor",
"ss_gravity_version":"Version",
"ss_gravity_power":"Power",
"ss_gravity_resolution":"Resolution",
"ss_gravity_max":"Max range",
"ss_gravity_min_delay":"Min delay",
"ss_gyro_name":"Gyroscope",
"ss_gyro_vendor":"Vendor",
"ss_gyro_version":"Version",
"ss_gyro_power":"Power",
"ss_gyro_resolution":"Resolution",
"ss_gyro_max":"Max range",
"ss_gyro_min_delay":"Min delay",
"ss_humid_name":"Relative humidity",
"ss_humid_vendor":"Vendor",
"ss_humid_version":"Version",
"ss_humid_power":"Power",
"ss_humid_resolution":"Resolution",
"ss_humid_max":"Max range",
"ss_humid_min_delay":"Min delay",
"ss_light_name":"Light",
"ss_light_vendor":"Vendor",
"ss_light_version":"Version",
"ss_light_power":"Power",
"ss_light_resolution":"Resolution",
"ss_light_max":"Max range",
"ss_light_min_delay":"Min delay",
"ss_linear_name":"Linear acceleration",
"ss_linear_vendor":"Vendor",
"ss_linear_version":"Version",
"ss_linear_power":"Power",
"ss_linear_resolution":"Resolution",
"ss_linear_max":"Max range",
"ss_linear_min_delay":"Min delay",
"ss_mag_name":"Magnetic field",
"ss_mag_vendor":"Vendor",
"ss_mag_version":"Version",
"ss_mag_power":"Power",
"ss_mag_resolution":"Resolution",
"ss_mag_max":"Max range",
"ss_mag_min_delay":"Min delay",
"ss_orient_name":"Orientation",
"ss_orient_vendor":"Vendor",
"ss_orient_version":"Version",
"ss_orient_power":"Power",
"ss_orient_resolution":"Resolution",
"ss_orient_max":"Max range",
"ss_orient_min_delay":"Min delay",
"ss_pressure_name":"Pressure",
"ss_pressure_vendor":"Vendor",
"ss_pressure_version":"Version",
"ss_pressure_power":"Power",
"ss_pressure_resolution":"Resolution",
"ss_pressure_max":"Max range",
"ss_pressure_min_delay":"Min delay",
"ss_proximity_name":"Proximity",
"ss_proximity_vendor":"Vendor",
"ss_proximity_version":"Version",
"ss_proximity_power":"Power",
"ss_proximity_resolution":"Resolution",
"ss_proximity_max":"Max range",
"ss_proximity_min_delay":"Min delay",
"ss_rot_name":"Rotation vector",
"ss_rot_vendor":"Vendor",
"ss_rot_version":"Version",
"ss_rot_power":"Power",
"ss_rot_resolution":"Resolution",
"ss_rot_max":"Max range",
"ss_rot_min_delay":"Min delay",
"ss_temp_name":"Ambient temperature",
"ss_temp_vendor":"Vendor",
"ss_temp_version":"Version",
"ss_temp_power":"Power",
"ss_temp_resolution":"Resolution",
"ss_temp_max":"Max range",
"ss_temp_min_delay":"Min delay",

"st_board":"Board",
"st_bootloader":"Bootloader",
"st_brand":"Brand",
"st_device":"Device",
"st_display":"Build number",
"st_fingerprint":"Build finger print",
"st_hardware":"Hardware",
"st_host":"Host",
"st_id":"ID",
"st_mid":"Model ID",
"st_manufacture":"Manufacture",
"st_model":"Model",
"st_product":"Product",
"st_radio":"Baseband version",
"st_tags":"Build tags",
"st_time":"Build time",
"st_type":"Build type",
"st_user":"Build user",
"st_codename":"Release codename",
"st_incremental":"Release incremental",
"st_release":"Android version",
"st_sdk_int":"API level",
"st_vm_version":"VM version",
"st_linux_version":"Kernel version",
"st_rom_devname":"ROM developer name",
"st_rom_name":"ROM name",
"st_rom_version":"ROM version",
"st_rooted":"Rooted",
"st_features":"Hardware features",
"st_gles_version":"GLES version",
"st_touch_screen":"Touch screen",
"st_keyboard":"Keyboard",
"st_navigation":"Navigation device",

"tp_type":"Phone type",
"tp_sim_mcc":"Operator MCC",
"tp_sim_mnc":"Operator MNC",
"tp_sim_country":"Operator country",
"tp_op_name":"Operator name",
"tp_version":"Software version",

"ur_id":"Device ID",
"ur_lang":"Language",
"ur_lang_region":"Language region",
"ur_country":"Country",

"wf_ava":"Wifi supported",
"wf_direct":"Wifi direct supported",
"wf_dual_band":"Dual-band supported",
"wf_multicast":"Multicast enabled",
"wf_interface":"Interface",
}
;
</script>
</head>
<body>
<!-- ================================ -->
<pre>
/* AUTO-GENERATED FILE. DO NOT MODIFY!
 *
 * This class was automatically generated by running util/GendeviceInfoJavaClass.htm
 * 1. copy the content of util/INK.json to replace 
 *    the value of INKs variable of util/GendeviceInfoJavaClass.htm
 * 2. open util/GendeviceInfoJavaClass.htm on your web browser
 * 3. replace the content of DeviceInfoKey.java with the output string
 */
package com.a0soft.gphone.aTruffleHog.di;
/*
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 3, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * Copyright(C) 2011 
 *   Sam Lu [ysl.sam.lu (at) gmail.com]
 *
 */
 
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Set;

import com.a0soft.gphone.aTruffleHog.util.aDebug;

public class DeviceInfoKey {
    static final int VERSION = 100; //1.00 
    
    public static class K {
</pre><pre id='ink_k'></pre><pre>
    }
    
    @SuppressWarnings("unused") 
    private static class N {
</pre><pre id='ink_n'></pre><pre>
    }
    
    private static HashMap&lt;String, String>  m_mapKey2Name;
    
    private static final String LOG_TAG = DeviceInfoKey.class.getSimpleName();
    
    ///////////////////////////////////////////////////////
    public static String
    GetName(String strINK)
    {
        HashMap&lt;String, String> map = _GetMap();
        
        return map.get(strINK);
    }
    
    public static Set&lt;String>
    GetKeys()
    {
        HashMap&lt;String, String> map = _GetMap();
        
        return map.keySet();
    }
    
    private static HashMap&lt;String, String>
    _GetMap()
    {
        if (m_mapKey2Name != null) return m_mapKey2Name;
        
        Field[] fdKeys, fdNames;
        
        fdKeys = K.class.getDeclaredFields();
        fdNames = N.class.getDeclaredFields();
        
        final int N = fdKeys.length;
        
        m_mapKey2Name = new HashMap&lt;String, String>(N);
                
        if (N != fdNames.length) {
            if (aDebug.ENABLED)
                aDebug.e(LOG_TAG, "GetName(): why the array sizes are not equal?");
            return m_mapKey2Name;
        }
        
        try {
            for (int i = 0; i < N; ++i) {
                Field fdKey = fdKeys[i];
                Field fdName = fdNames[i];
                String strKey = (String)fdKey.get(null);
                String strName = (String)fdName.get(null);
                if (aDebug.ENABLED)
                    aDebug.d(LOG_TAG, strKey + "=>" + strName);
                m_mapKey2Name.put(strKey, strName);
            }           
        } catch (IllegalArgumentException e) {
            if (aDebug.ENABLED)
                aDebug.e(LOG_TAG, "GetName()", e);
        } catch (IllegalAccessException e) {
            if (aDebug.ENABLED)
                aDebug.e(LOG_TAG, "GetName()", e);
        }
        
        return m_mapKey2Name;
    }       
}
<!-- ================================ -->
</pre>

<script type="text/javascript">
var var_name;
var strK = "";
var strN = "";
for (ink in INKs) {
   var_name = ink.toUpperCase();
   strK += "        public static final String " + var_name + 
          " = \"" + ink + "\";\n";
   strN += "        public static final String " + var_name + 
          " = \"" + INKs[ink] + "\";\n";
}
document.getElementById("ink_k").innerHTML = strK;
document.getElementById("ink_n").innerHTML = strN;
</script>
</body>
</html>
